class Solution {
public:
    int uniquePathsWithObstacles(vector<vector<int>>& s) {
        int m=s.size();
        int n=s[0].size();
        if(s[0][0]==1)return 0;
        if(m==1&&n==1)return 1;
        vector<vector<int>>dp(m,vector<int>(n));
        dp[0][0]=1;

        for(int i=0;i<m;i++)
        {
            for(int j=0;j<n;j++)
            {
                if(s[i][j]==0)
                {
                    if(i-1>=0)
                    dp[i][j]+=dp[i-1][j];
                    if(j-1>=0)
                    dp[i][j]+=dp[i][j-1];
                }
            }
        }
        return dp[m-1][n-1];
    }
};
